home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctjoc85.arc / FATUTIL.ASM < prev    next >
Assembly Source File  |  1985-08-02  |  5KB  |  124 lines

  1.     TITLE   ASMUTIL - Assembly language utilities module
  2.  
  3. TRUE            EQU     01H        ; boolean true
  4. FALSE           EQU     00H        ; boolean false
  5. STCRSR          EQU     02H        ; bios set cursor
  6. SCROLLUP        EQU     06H        ; bios scroll page
  7. VIDEO_IO        EQU     10H        ; bios video i/o
  8. BREAKINT        EQU     23H        ; dos ctrl-break
  9. DOS_FUNCTION    EQU     21H        ; dos function call
  10. GETVECTOR       EQU     35H        ; dos get vector function
  11. SETVECTOR       EQU     25H        ; dos set vector function
  12.  
  13. ASMUTIL SEGMENT PUBLIC 'CODE'
  14.  
  15.         ASSUME  CS:ASMUTIL
  16.         ASSUME  DS:NOTHING
  17.  
  18. BREAKFLAG       DB        0        ; break key hit flag
  19. SAVEBREAK       DD        0        ; saved copy of break vect.
  20.  
  21. ;
  22. ; procedure set_cursor(row, column: integer);
  23. ;
  24. ; Position cursor on screen.  Assumes video page 0.
  25. ;
  26.         PUBLIC  SET_CURSOR
  27. SET_CURSOR      PROC    FAR        ; set cursor on text page
  28.                                    ; with row and col on stack
  29.         PUSH    BP                 ; save frame pointer
  30.         MOV     BP, SP             ; get stack top
  31.         MOV     DH, [BP+8]         ; set dh = row
  32.         MOV     DL, [BP+6]         ; set dl = column
  33.         MOV     BH, 0              ; default to page zero
  34.         MOV     AH,STCRSR          ; set ah = set cursor
  35.         INT     VIDEO_IO           ; call bios video i/o
  36.         POP     BP                 ; restore frame pointer
  37.         RET     4
  38. SET_CURSOR ENDP
  39. ;
  40. ; procedure clear_screen;
  41. ;
  42. ; Clear video screen.
  43. ;
  44.         PUBLIC  CLEAR_SCREEN   
  45. CLEAR_SCREEN    PROC FAR           ; clear screen
  46.         PUSH    BP                 ; save frame pointer
  47.         MOV     BP, SP             ; get stack top
  48.         MOV     AL,0               ; blank entire window
  49.         MOV     CH,0               ; row of upper left corner
  50.         MOV     CL,0               ; col or upper left corner
  51.         MOV     DH,24              ; row of lower right corner
  52.         MOV     DL,79              ; col of lower right corner
  53.         MOV     BH,7               ; normal attributes
  54.         MOV     AH,SCROLLUP        ; AH = scroll active page up
  55.         INT     VIDEO_IO           ; call bios video i/o
  56.         POP     BP                 ; restore frame pointer
  57.         RET
  58. CLEAR_SCREEN    ENDP
  59. ;
  60. ; function check_break
  61. ;
  62. ; Checks if ctrl-break has been pressed.  It returns TRUE
  63. ; if ctrl-break has been pressed and FALSE if it hasn't.
  64. ;
  65.         PUBLIC  CHECK_BREAK
  66. CHECK_BREAK     PROC FAR
  67.         XOR     AX,AX              ; clear ax
  68.         MOV     AL, BREAKFLAG      ; return value = breakflag
  69.         MOV     BREAKFLAG, FALSE   ; reset break flag
  70.         RET
  71. CHECK_BREAK     ENDP
  72. ;
  73. ; procedure install_break_handler;
  74. ;
  75. ; Installs a ctrl-break interrupt handler.  It also
  76. ; saves the address of the former break handler.
  77. ;
  78.         PUBLIC  INSTALL_BREAK_HANDLER
  79. INSTALL_BREAK_HANDLER PROC FAR
  80.         PUSH    DS
  81.         MOV     AL,BREAKINT        ; al = dos break interrupt
  82.         MOV     AH,GETVECTOR       ; ah = dos get vector funct.
  83.         INT     DOS_FUNCTION            ; call dos
  84.         MOV     WORD PTR SAVEBREAK,BX   ; save off. of int. vec.
  85.         MOV     WORD PTR SAVEBREAK+2,ES ; save base of int. vec.
  86.         MOV     AL,BREAKINT        ; al = dos break interrupt
  87.         MOV     AH,SETVECTOR       ; ah = dos set vector funct.
  88.         MOV     DX,OFFSET BREAK_HANDLER ; dx = off. break hndlr
  89.         MOV     BX,CS                   ; bx = this segment
  90.         MOV     DS,BX                   ; ds = this segment
  91.         INT     DOS_FUNCTION            ; call dos
  92.         POP     DS
  93.         RET
  94. INSTALL_BREAK_HANDLER  ENDP
  95. ;
  96. ; interrupt handler break_handler;
  97. ;
  98. ; This is invoked by the bios when ctrl_break is pressed.
  99. ;
  100. BREAK_HANDLER   PROC FAR
  101.         MOV     BREAKFLAG, TRUE    ; breakflag = ctrl-break
  102.         IRET                       ;  was pressed
  103. BREAK_HANDLER   ENDP
  104. ;
  105. ; procedure remove_break_handler;
  106. ;
  107. ; Restores the previous ctrl-break handler.
  108. ;
  109.         PUBLIC  REMOVE_BREAK_HANDLER
  110. REMOVE_BREAK_HANDLER PROC FAR
  111.         PUSH    DS
  112.         MOV     AL,BREAKINT        ; al = dos break interrupt
  113.         MOV     AH,SETVECTOR       ; ah = dos set vector funct.
  114.         MOV     DX,WORD PTR SAVEBREAK   ; dx = saved offset
  115.         MOV     BX,WORD PTR SAVEBREAK+2 ; bx = saved base
  116.         MOV     DS,BX                   ; ds = saved base
  117.         INT     DOS_FUNCTION            ; call dos
  118.         POP     DS
  119.         RET
  120. REMOVE_BREAK_HANDLER ENDP
  121.  
  122. ASMUTIL ENDS
  123.         END
  124.